/****************************************************************************************
 * Copyright (c) 2010~2012 All Rights Reserved by
 *  G-Net Integrated Service Co.,  Ltd. 
 ****************************************************************************************/
/**
 * @file DeviceUtil.java
 * @author wenhui.li
 * @date 2012-9-26 下午8:00:22 
 * Revision History 
 *     - 2012-9-26: change content for what reason
 ****************************************************************************************/

package com.lurencun.android.topicbank.util;

import java.util.List;
import java.util.Locale;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Environment;
import android.telephony.TelephonyManager;

/**
 * @brief 手机辅助类
 * 
 *        功能描述： -# 获取手机型号 -# 获取手机操作语言 -# 获取手机系统 -# 获取Android 手机IMEI(唯一标示) -#
 *        获取客户端版本号
 */
public class DeviceUtil {

	/**
	 * 取得AndroidId
	 * @param context 上下文
	 * @return
	 */
	public static String getAndroidID(Context context) {
		return android.provider.Settings.Secure.getString(context.getContentResolver(), "android_id");
	}
	
	/**
	 * @brief 获取手机型号
	 * @return 返回手机型号
	 */
	public static String getPhoneModel() {
		return android.os.Build.MODEL;
	}

	/**
	 * @brief 获取手机版本号
	 * @return 返回手机版本号
	 */
	public static String getOSVersion() {
		return android.os.Build.VERSION.RELEASE;
	}

	/**
	 * @brief 获取操作系统语言
	 * @return 1表示中文，2表示其他即英文
	 */
	public static int getOsLangugeType() {
		String language = Locale.getDefault().getLanguage();
		if (language.startsWith("zh")) {
			return 1;
		} else {
			return 2;
		}
	}

	/**
	 * @brief 获取操作系统语言
	 * @return 语言类型
	 */
	public static String getOsLanguge() {
		return Locale.getDefault().getLanguage();
	}

	/**
	 * @brief 获取IMEI号
	 * @param context
	 *            上下文
	 * @return 返回手机唯一的标识:IMEI
	 */
	public static String getIMEI(Context context) {
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		return tm.getDeviceId();
	}

	/**
	 * @brief 尝试取得手机号码
	 * @param context
	 *            上下文context
	 * @return 返回手机号码
	 */
	public static String getPhoneNumber(Context context) {
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		return tm.getLine1Number();
	}

	/**
	 * @brief 判断手机是否有SD卡
	 * @return true表示有，false表示无
	 */
	public static boolean hasSDCard() {
		return Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED);
	}

	/**
	 * @brief 判断设备是否有SIM卡
	 * @param context
	 *            上下文文本对象
	 * @req MeetMeMobile1.0-ANDROIDSRS-003
	 * @return boolean true表示有SIM卡，false表示无
	 */
	public static boolean isCanUseSim(Context context) {
		boolean canUse = false;
		TelephonyManager telephony = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		int type = telephony.getPhoneType();
		int simState = telephony.getSimState();
		if (type == TelephonyManager.PHONE_TYPE_NONE
				|| TelephonyManager.SIM_STATE_ABSENT == simState) {
			canUse = false;
		} else {
			canUse = true;
		}
		return canUse;
		// return (context.getResources().getConfiguration().screenLayout &
		// Configuration.SCREENLAYOUT_SIZE_MASK) >=
		// Configuration.SCREENLAYOUT_SIZE_LARGE;
	}

	/**
	 * @brief 获取客户端版本号
	 * @param context
	 *            上下文Context对象
	 * @return 返回版本信息
	 */
	public static String getVersionName(Context context) {
		String version = "";
		try {
			// 获取PackageManager的实例
			PackageManager packageManager = context.getPackageManager();
			// getPackageName()是你当前类的包名，0代表是获取版本信息
			PackageInfo packInfo = packageManager.getPackageInfo(
					context.getPackageName(), 0);
			version = packInfo.versionName;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
		return version;
	}

	/**
	 * @brief 获取网络运营商名称
	 * @param context
	 *            上下文文本对象
	 * @return String 运营商名称
	 */
	public static String getOperaterName(Context context) {
		// 初始化TelephonyManger对象
		TelephonyManager mTelNet = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		// 返回运行商名称
		return mTelNet.getSimOperatorName();
	}

	/**
	 * @brief 判断字符串全为数字
	 * @return boolean true表示是，false表示否
	 */
	public static boolean isNumeric(String str) {
		for (int i = str.length(); --i >= 0;) {
			if (!Character.isDigit(str.charAt(i))) {
				return false;
			}
		}
		return true;
	}

	/**
	 * @brief 返回当前正在显示的页面
	 * @param context
	 *            上下文
	 * @return 当前正在显示的页面
	 */
	public static String getRecurrentActivity(Context context) {
		ActivityManager activityManager = (ActivityManager) context
				.getSystemService(Context.ACTIVITY_SERVICE);
		List<RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);
		if (tasksInfo.size() > 0) {
			// 返回当前正在显示的页面
			return tasksInfo.get(0).topActivity.getShortClassName();
		} else {
			return null;
		}
	}
}
